package com.cskaoyan.javase.oop3._1interface._4example.controller.impl;

import com.cskaoyan.javase.oop3._1interface._4example.controller.GoodsController;
import com.cskaoyan.javase.oop3._1interface._4example.dao.GoodsDao;
import com.cskaoyan.javase.oop3._1interface._4example.dao.impl.GoodsDaoImpl;
import com.cskaoyan.javase.oop3._1interface._4example.model.Goods;

import javax.swing.*;

/**
 * 该对象对外提供商品处理的业务操作
 *
 * @since 11:13
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class GoodsControllerImpl implements GoodsController {
    // 依赖于dao层对象完成数据处理操作
    private GoodsDao gd = new GoodsDaoImpl();

    /**
     * 该方法返回装有商品对象的数组,数组中没有null元素
     * @return com.cskaoyan.javase.oop3._1interface._4example.model.Goods[]
     * @author wuguidong@cskaoyan.onaliyun.com
     * @since 2022/10/08 11:16
     */
    @Override
    public Goods[] getAllRealGoods() {
        return gd.getAllRealGoods();
    }

    /**
     * 如果插入成功,返回0
     * 如果插入失败,id重复,返回1
     * 如果插入失败,数组满了,返回2
     *
     * @param id 要插入的商品id
     * @param name 要插入的商品name
     * @param price 要插入的商品price
     * @param brand 要插入的商品brand
     * @return int
     * @author wuguidong@cskaoyan.onaliyun.com
     * @since 2022/10/08 11:31
     */
    @Override
    public int insertGoods(int id, String name, double price, String brand) {
        // return gd.insertGoods(id, name, price, brand);
        // 1.先校验id是否重复,重复就返回1
        // 规定id重复返回true,否则返回false
        if (gd.judgeIdRepeat(id)) {
            // 重复了
            return 1;
        }
        // 代码运行到下面,说明id一定不重复
        // 2.在id不重复的前提下,尝试进行插入,插入成功返回0,插入失败说明数组满了,返回2
        Goods goodsInsert = new Goods(id, name, price, brand);
        // 在id已经不重复的前提下,规定插入成功返回true,不成功返回false
        if (gd.insertGoods(goodsInsert)) {
            // 插入成功
            return 0;
        }
        // 运行到这里插入都没有成功,只可能是数组满了
        return 2;
    }
}
